<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
<script id="script1">
  /** case1
   * 下面的例子不会从红变黄再变蓝 而是直接变蓝(只渲染一次)
   *  因为会等script1宏任务执行完了,检查点清空完当前的微任务了
   *  才会让GUI线程去渲染页面 参看eventloop.png*/
  // document.body.style = 'background:red';
  // document.body.style = 'background:yellow';
  // document.body.style = 'background:lightblue';


  /** case2
   * 下面的例子会渲染三次(由于渲染太快,只能感受到页面闪动了一下,但case1连闪动都不会闪动)
   * 因为下面是三个宏任务,每次宏任务执行完后都会让GUI线程去渲染页面(如果有渲染任务的话)*/
  setTimeout(() => {
    document.body.style = 'background:red';
  });

  setTimeout(() => {
    document.body.style = 'background:yellow';
  });

  setTimeout(() => {
    document.body.style = 'background:lightblue';
  });
</script>
</body>
</html>
